<?php

/**
 * Permite realizar la venta de tarjetas prepago SIMERT
 * @package simertweb 
 * @subpackage controllers  
 * @category Recaudación
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com> 
 * @version 1.0 
 */
class Venta_tarjetas extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('mpersona');
        $this->load->model('mproveedor');
        $this->load->model('mventas');
        $this->load->model('mseries');
        $this->load->model('acceso');
        $this->load->model('reportes');
    }

    /**
     * Muestra la interfaz para la venta de tarjetas prepago SIMERT
     */
    function index() {
        if ($this->acceso->sesion() == 2) {
            $data['serie'] = $this->mseries->series();
            $data2['serieactual'] = $this->mventas->obtener_ultima_venta2();
            $this->load->view('includes/menu_izquierdo1');
            $this->load->view('includes/cabecera1', $data2);
            $this->load->view('venta_tarjetas', $data);
            $this->load->view('includes/footer');
        } else {
            $this->load->view('autenticacion');
        }
    }

    /**
     * Permite buscar un cliente de tarjetas prepago SIMERT
     */
    function buscar() {
        $this->form_validation->set_rules('buscar', 'Buscar', 'required');
        if ($this->form_validation->run() === TRUE) {
            $data2['serieactual'] = $this->mventas->obtener_ultima_venta2();
            $data['contenido'] = $this->mproveedor->buscarProveedor($_POST['buscar']);
            if ($this->acceso->sesion() == 2) {
                $this->load->view('includes/menu_izquierdo1');
                $this->load->view('includes/cabecera1', $data2);
                $this->load->view('venta_tarjetas', $data);
                $this->load->view('includes/footer');
            } else {
                $this->index();
            }
        }
    }

    /**
     * Permite calcular el total de la venta
     */
    function calcular() {
        $this->form_validation->set_rules('cliente', 'Cliente', 'required');
        $this->form_validation->set_rules('des', 'Descuento', 'required');
        $this->form_validation->set_rules('idProv', ' ', 'required');
        $this->form_validation->set_rules('cantidad', 'Cantidad', 'required|integer|greater_than[9]|trim');
        $this->form_validation->set_rules('serie', 'Serie', 'required|integer|trim');
        if ($this->form_validation->run() === TRUE) {
            $data2['serieactual'] = $this->mventas->obtener_ultima_venta2();
            //valida si la serie es correcta
            if ($this->mventas->serieFinal($_POST['serie'], $_POST['serie'] + $_POST['cantidad'] - 1) == 1) {
                $data['datos'] = $this->mventas->calcularPrecio($_POST['cantidad'], $_POST['serie'], $_POST['idProv']);
                $this->load->view('includes/menu_izquierdo1');
                $this->load->view('includes/cabecera1', $data2);
                $this->load->view('venta_tarjetas', $data);
                $this->load->view('includes/footer');
            } else {
                $data['datos'] = $this->mventas->serieIncorrecta($_POST['idProv']);
                $this->load->view('includes/menu_izquierdo1');
                $this->load->view('includes/cabecera1');
                $this->load->view('venta_tarjetas', $data);
                $this->load->view('includes/footer');
            }
        } else {
            $this->index();
        }
    }

    /**
     * Válida que la cadena contenga caracteres alfabéticos, espacios y tildes
     * @param type $str_in es el parámetro que se ingresa en el formulario
     * @return boolean
     */
    function alpha_space($str_in = '') {
        if (!preg_match("/^([-a-záéíóúÁÉÍÓÚñÑ ])+$/i", $str_in)) {
            $this->form_validation->set_message('alpha_space', '<p style="color: red">El campo %s acepta solo carateres alfabéticos.</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * Perimte realizar una venta de tarjetas prepago SIMERT
     */
    function guardar() {
        if ($this->acceso->sesion() == 2) {
            $this->mventas->guardarVenta($_POST['idProv'], $_POST['cantidad'], $_POST['serie']
                    , $_POST['precio'], $_POST['descuento'], $_POST['total']
            );
            $venta = array(
                'dir' => "/simertweb/venta_tarjetas/generar_pdf",
                'total' => "$ " . round($_POST['total'], 2, PHP_ROUND_HALF_UP),
                'descuento' => "$ " . round($_POST['descuento'], 2, PHP_ROUND_HALF_UP),
                'precio' => "$ " . $_POST['precio'],
                'serie' => $_POST['serie'] . " hasta " . ($_POST['serie'] + $_POST['cantidad']),
                'cantidad' => $_POST['cantidad'],
                'cliente' => $this->mproveedor->buscarNombres($this->mproveedor->buscarCedula($_POST['idProv'])),
            );

            $data['message'] = $venta;
            $data2['serieactual'] = $this->mventas->obtener_ultima_venta2();
            $this->load->view('includes/menu_izquierdo1');
            $this->load->view('includes/cabecera1', $data2);
            $this->load->view('includes/mensaje_venta1', $data);
            $this->load->view('includes/footer');
        } else {
            $this->index();
        }
    }

    /**
     * Permite generar un documento .pdf como comprobante de pago
     */
    function generar_pdf() {
        $venta = $_POST['lista'];
        if ($this->acceso->sesion() == 2) {
            $titulo = '<h1><B><br>COMPROBANTE DE PAGO</B></h1><BR>';
            date_default_timezone_set('America/Guayaquil');
            $fecha = date('d-m-Y');
            $hora = date('H:i:s');

            $data = array(
                $venta['1'],
                $venta['2'],
                $venta['3'],
                $venta['4'],
                $venta['5'],
                $venta['6'],
                $hora,
                $fecha,
            );

            $campos = array(
                'TOTAL A PAGAR:',
                'DESCUENTO:',
                'SUBTOTAL:',
                'SERIE:',
                'CANTIDAD:',
                'CLIENTE:',
                'HORA DE EMISIÓN:',
                'FECHA DE EMISIÓN:',
            );
            $contenido = array_merge($campos, $data);
            $this->reportes->comprobante($contenido, $titulo);
        } else {
            $this->index();
        }
    }

}

?>
